package cn.biplam.front.template.base;

import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.front.html.HtmlDiv;
import cn.biplam.front.html.HtmlFieldSet;
import cn.biplam.front.html.base.Html;
import cn.biplam.front.html.base.HtmlWindow;
import cn.biplam.front.html.base.Const.Overflow_Mode;
import cn.biplam.front.template.Template;

/**
 * 带有边框和标题的FieldSet容器
 */
public class FieldSet implements Template{
	
	private HtmlDiv div;
	private HtmlFieldSet fieldSet;
	
	/**
	 * 构造方法，传入容器标题
	 * @param lengend 标题
	 * @throws ErrorMessage 
	 */
	public FieldSet(String lengend) throws ErrorMessage{
		this(null,lengend);
	}
	
	/**
	 * 构造方法，传入ID和标题
	 * @param ID      页面ID  
	 * @param lengend 标题
	 * @throws ErrorMessage 
	 */
	public FieldSet(String ID,String lengend) throws ErrorMessage{
		this.div=new HtmlDiv();
		fieldSet=new HtmlFieldSet(ID,"fmd",lengend);
		div.put(fieldSet);
	}
	
	/**
	 * 往容器中放入对象
	 * @param html   html对象
	 * @throws ErrorMessage
	 */
	public void put(Html html) throws ErrorMessage{
		fieldSet.put(html);
	}
	
	/**
	 * 设置Y轴滚动
	 */
	public void setScroll_Y() throws ErrorMessage{
		fieldSet.setOverflowY(Overflow_Mode.scroll);
	}
	
	/**
	 * 设置X轴滚动
	 */
	public void setScroll_X() throws ErrorMessage{
		fieldSet.setOverflowX(Overflow_Mode.scroll);
	}

	/**
	 * 通过设置内容高度，设置FieldSet高度
	 * @param height			内容的像素高度
	 * @return	设置后的FieldSet总高度
	 * @throws ErrorMessage
	 */
	public int setContentHeight(int height) throws ErrorMessage{
		int iHeight = height+22;
		fieldSet.setStyleHeight(iHeight);
		return iHeight;
	}
	
	/**
	 * 通过设置内容高度，设置FieldSet包含横向滚动条的高度
	 * @param height			内容的像素高度
	 * @return	设置后的FieldSet总高度
	 * @throws ErrorMessage
	 */
	public int setContentHeightScrollX(int height) throws ErrorMessage{
		int iHeight = height+22+18;
		fieldSet.setStyleHeight(iHeight);
		return iHeight;
	}
	
	/**
	 * 通过设置内容宽度，设置FieldSet宽度
	 * @param width				内容的像素宽度
	 * @return	设置后的FieldSet总宽度
	 * @throws ErrorMessage
	 */
	public int  setContentWidth(int width) throws ErrorMessage{
		int iWidth = width+6;
		fieldSet.setStyleWidth(iWidth);
		return iWidth;
	}

	/**
	 * 通过设置内容宽度，设置FieldSet包含横向滚动条的宽度
	 * @param width				内容的像素宽度
	 * @return	设置后的FieldSet总宽度
	 * @throws ErrorMessage
	 */
	public int setContentWidthScrollY(int width) throws ErrorMessage{
		int iWidth = width+6+18;
		fieldSet.setStyleWidth(iWidth);
		return iWidth;
	}

	/**
	 * 返回FieldSet页面对象
	 * @return	HtmlWindow
	 * @throws ErrorMessage
	 */
	public HtmlWindow get() throws ErrorMessage {
		div.setStyleSize(fieldSet.getStyle("width"), fieldSet.getStyle("height"));
		return div;
	}
	
	/**
	 * 返回内部留白的宽度<BR>
	 * 如果外部宽度固定，内部对象可用宽度=外部宽度-内部留白的宽度
	 * @return int
	 */
	public static int GetPaddingWidth(){
		return 6;
	}
}
